/**
 * 将form里面的内容序列化成json
 * 相同的checkbox用分号拼接起来
 * @param {dom} 指定的选择器
 * @param {obj} 需要拼接在后面的json对象
 * @method serializeJson
 * 获取表单的数据：$("#formid").serializeJson();
 * 绑定数据到表单：$("#formid").setForm(json);
 * */
$.fn.serializeJson=function(otherString){
    var serializeObj={},
        array=this.serializeArray();
    $(array).each(function(){
        if(serializeObj[this.name]){
            serializeObj[this.name]+=';'+this.value;
        }else{
            serializeObj[this.name]=this.value;
        }
    });

    if(otherString!=undefined){
        var otherArray = otherString.split(';');
        $(otherArray).each(function(){
            var otherSplitArray = this.split(':');
            serializeObj[otherSplitArray[0]]=otherSplitArray[1];
        });
    }
    return serializeObj;
};

/**
 * 将josn对象赋值给form
 * @param {dom} 指定的选择器
 * @param {obj} 需要给form赋值的json对象
 * @method serializeJson
 * */
$.fn.setForm = function(jsonValue){
    var obj = this;
    $.each(jsonValue,function(name,ival){
        var edit_obj = obj.find("[name="+name+"]");
        if (edit_obj.attr("type")=="password"){
           // do nothing
        }else if(edit_obj.attr("type")=="checkbox"){
            if(ival !== null){
                if (edit_obj.length==1){
                    //console.log(name + ':' + ival);
                    if (ival == true){
						edit_obj.attr("checked", true);
					}else{
                        edit_obj.attr("checked", false);
                    }
                }else{
                    var ids1 = ',' + ival + ',';
                    var ids2 = ';' + ival + ';';
                    edit_obj.each(function(){
                        if($(this).val() == ival || $(this).val() == String(ival) || 
                            ids1.indexOf(',' + $(this).val() + ',')>=0 || 
                            ids2.indexOf(',' + $(this).val() + ',')>=0){
                            $(this).attr('checked',true);
                        }else{
                            $(this).attr('checked',false);
                        }
                    });
                }
                // var checkboxObj = $("[name="+name+"]");
				// if (checkboxObj.length > 1){
				// 	var checkArray = ival.split(";");
				// 	for(var i=0;i<checkboxObj.length;i++){
				// 		for(var j=0;j<checkArray.length;j++){
				// 			if(checkboxObj[i].value == checkArray[j]){
				// 				checkboxObj[i].click();
				// 			}
				// 		}
				// 	}
				// }else{
				// 		//console.log(ival);
				// 	if (ival == true){
				// 		//console.log("ok");
				// 		checkboxObj.attr("checked", true);
				// 	}else{
                //         checkboxObj.attr("checked", false);
                //     }
				// }
            }
        }
        else if(edit_obj.attr("type")=="radio"){
            edit_obj.each(function(){
                if($(this).val() == ival || $(this).val() == String(ival)){
                    $(this).attr('checked',true);
                }
                // var radioObj = $("[name="+name+"]");
                // for(var i=0;i<radioObj.length;i++){
                //     console.log(radioObj[i].value);
                //     if(radioObj[i].value == ival){
                //         radioObj[i].click();
                //     }
                // }
            });
        }
        else if(edit_obj.attr("type")=="textarea"){
            obj.find("[name="+name+"]").html(ival);
        }
        else{
			//console.log(name + " = " + ival + "\r\n");
            edit_obj.val(ival);
        }
    })
}

$.fn.setCheckBoxList = function(jsonValue, elmpre, idcol){
    var obj = this;
	var cols = idcol.split(',');
	for(i in jsonValue){
		//console.log(jsonValue[i][idcol]);
		var ckname = elmpre;
		for ( var j = 0; j <cols.length; j++){
			ckname += '_' + jsonValue[i][cols[j]];
		}
		obj.find("[name="+ckname+"]").attr("checked", true);
	}
}